package com.example.springboottest.example.xml;

import java.lang.reflect.Method;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * 下面介绍java.lang.Void 与 void的比较及使用
 * void关键字表示函数没有返回结果，是java中的一个关键字。
 * Void类的代码可以看到，Void类型不可以继承与实例化。
 */
public class VoidMain {
    public static void main(String[] args) {
        /**
         * 使用场景一：比如使用 Callable接口，该接口必须返回一个值，但实际执行后没有需要返回的数据。 这时可以使用Void类型作为返回类型。
         */
        ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
        Future<Void> f = singleThreadExecutor.submit(new Callable() {
            @Override
            public Void call() throws Exception {
                return null;
            }
        });

        /**
         * 使用场景二：通过反射获取所有返回值为void的方法。
         */
        for (Method method : VoidMain.class.getMethods()) {
            if (method.getReturnType().equals(Void.TYPE)) {
                System.out.println(method.getName());
            }
        }
    }
}
